package 简单.分类讨论;

/**
 * 给你一个整数数组 nums 。数组中唯一元素是那些只出现 恰好一次 的元素。
 * <p>
 * 请你返回 nums 中唯一元素的 和 。
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/sum-of-unique-elements/
 */
public class 唯一元素的和_1748 {

    public static void main(String[] args) {

    }

    /**
     * 数组中的数字在1-100之间，用一个数组记录出现的次数
     *
     * @param nums
     * @return
     */
    public int sumOfUnique(int[] nums) {
        int ans = 0;
        int[] total = new int[101];
        for (int num : nums) {
            total[num]++;
        }
        for (int i = 1; i < total.length; i++) {
            if (total[i] == 1) {
                ans += i;
            }
        }
        return ans;
    }

    /**
     * 一次遍历，如果出现次数=1，那么ans+num，出现次数=2，那么ans-num,如果>2，不做改变
     *
     * @param nums
     * @return
     */
    public int efficientSumOfUnique(int[] nums) {
        int ans = 0;
        int[] total = new int[101];
        for (int num : nums) {
            total[num]++;
            if (total[num] == 1) {
                ans += num;
            } else if (total[num] == 2) {
                ans -= num;
            }
        }
        return ans;
    }

}
